
package Modelo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import javax.swing.JOptionPane;


public class ProductoModelo {
        ConexionModelo conexion=new ConexionModelo();
	private transient Connection con;
	ResultSet rs;


//linkedlist clase de java para generar listas
//preparedstatement permite prepara el estado recibir la informacion de la base de datos
//rsultset el resultado
 public LinkedList consultaProductoTabla(String consulta,int tipo)throws SQLException{
if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }
     //parametros consulta vendedores, tipo: 1.Cedula 2.Zona 3.Nombre
	LinkedList listaProd=new LinkedList();
	PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            if (consulta.equals(""))
  		pstmt=con.prepareStatement("select * from Producto");
            else
                if (tipo==1)
                    pstmt=con.prepareStatement("select * from Producto where codigo like '%"+ consulta + "%'");//probando
                else 
                    pstmt=con.prepareStatement("select * from Producto where descripcion like '%"+ consulta + "%'");//probando
                
  		rs=pstmt.executeQuery();
  		while(rs.next()){
  			listaProd.add(Producto.load(rs));
  		}

  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}

	return listaProd;
 }

 /**
  * insertar datos a la base de datos
  * @param prod
  * @throws SQLException
  */
 public void setNuevoProducto(Producto prod) throws SQLException {// 
        if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=null;
        try{

                pstmt=con.prepareStatement("insert into producto values(?,?,?,?,?,?,?)");
                pstmt.setString(1,  prod.getCodigo());
                pstmt.setString(2,  prod.getDescripcion());                
		pstmt.setDouble(3,  prod.getExistencia());
                pstmt.setDouble(4,  prod.getValorCompra());
                pstmt.setDouble(5,  prod.getValorVenta());
                pstmt.setDouble(6,  prod.getIva());
                pstmt.setBoolean(7,  prod.getEstado());
		pstmt.executeUpdate();
                
        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

 /**
  * actualizar donde consulta cedula o codigo y dato es el valor a cambiar
  * @param codigo producto
  */
  public void actualizarProducto(Producto prod) throws SQLException {// insertar datos a la base de datos
        int estado=0;
        if( prod.getEstado()==true){
            estado=1;            
        }
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=null;
        try{

                pstmt=con.prepareStatement("update producto set "
                        + "descripcion='" + prod.getDescripcion() + "',"
                        + "estado='" +estado+ "',"
                        + "existencia='" + prod.getExistencia() + "', "
                        + "valorCompra='" +  prod.getValorCompra() + "',"
                        + "valorVenta='" + prod.getValorVenta()+ "' ,"
                        + "iva='" + prod.getIva()+ "' "
                        + " where codigo='" + prod.getCodigo() +"'");
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

  /**
   * Consulta productos
   * @param consulta codigo
   * @return Producto
   * @throws SQLException
   */
    public Producto consultaProducto(String consulta) throws SQLException{
      Producto producto=new Producto();  
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }
        PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("select * from Producto where codigo='"+ consulta + "'");//probando
            rs=pstmt.executeQuery();

            while(rs.next()){
                producto=Producto.load(rs);
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return producto;
  }


}
